#!/bin/bash
 E='echo -e';e='echo -en';trap "R;exit" 2
 ESC=$( $e "\e")
 TPUT(){ $e "\e[${1};${2}H" ;}
 CLEAR(){ $e "\ec";}
# 25 возможно это
 CIVIS(){ $e "\e[?25l";}
# это цвет текста списка перед курсором при значении 0 в переменной  UNMARK(){ $e "\e[0m";}
 MARK(){ $e "\e[1;90m";}
# 0 это цвет заднего фона списка
 UNMARK(){ $e "\e[0m";}
# ~~~~~~~~ Эти строки задают цвет фона ~~~~~~~~
 R(){ CLEAR ;stty sane;CLEAR;};
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 HEAD(){ for (( a=2; a<=36; a++ ))
  do
   TPUT $a 1
 $E "\033[34m\xE2\x94\x82                                                                                                                                   \xE2\x94\x82\033[0m";
  done
 TPUT 1 1
 $E "\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m"
 TPUT 2 4
 $E "\033[1;36m *** nano - Другой редактор Nano, вдохновленный Pico ***                          \033[0m\033[34m|\033[0m";
 TPUT 4 4
 $E "\033[1;36mОпции                                                                             \033[34m| \033[1;32mOPTIONS\033[0m";
 TPUT 35 4
 $E "\033[32mUp \xE2\x86\x91 \xE2\x86\x93 Down Select Enter                                                          \033[34m|\033[32m";
 MARK;TPUT 3 1
 $E "\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m" ;UNMARK;}
  i=0; CLEAR; CIVIS;NULL=/dev/null
 FOOT(){ MARK;TPUT 37 1
 $E "\033[34m+~~~| Grannik | 2021.11.14 |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m";UNMARK;}
# это управляет кнопками ввер/хвниз
 i=0; CLEAR; CIVIS;NULL=/dev/null
#
 ARROW(){ IFS= read -s -n1 key 2>/dev/null >&2
           if [[ $key = $ESC ]];then 
              read -s -n1 key 2>/dev/null >&2;
              if [[ $key = \[ ]]; then
                 read -s -n1 key 2>/dev/null >&2;
                 if [[ $key = A ]]; then echo up;fi
                 if [[ $key = B ]];then echo dn;fi
              fi
           fi
           if [[ "$key" == "$($e \\x0A)" ]];then echo enter;fi;}
 M0(){ TPUT  5 3; $e "Определите границы слова по-другому                                                \033[32m -W                 --wordbounds             \033[0m";}
 M1(){ TPUT  6 3; $e "Укажите, какие другие символы следует рассматривать как часть слова                \033[32m -X \"characters\"    --wordchars=\"characters\" \033[0m";}
 M2(){ TPUT  7 3; $e "Укажите имя подсветки синтаксиса из числа определенных в файлах nanorc             \033[32m -Y name            --syntax=name            \033[0m";}
 M3(){ TPUT  8 3; $e "Позвольте немодифицированному Backspace или Delete стереть отмеченную область      \033[32m -Z                 --zap                    \033[0m";}
 M4(){ TPUT  9 3; $e "При мягком переносе строк переносите строки по пробелу, а не всегда по краю экрана \033[32m -a                 --atblanks               \033[0m";}
 M5(){ TPUT 10 3; $e "Автоматически обертывать текущую строку, когда она становится слишком длинной      \033[32m -b                 --breaklonglines         \033[0m";}
 M6(){ TPUT 11 3; $e "Постоянно показывать положение курсора в строке состояния                          \033[32m -c                 --constantshow           \033[0m";}
 M7(){ TPUT 12 3; $e "По-разному интерпретируйте клавиши Delete и Backspace                              \033[32m -d                 --rebinddelete           \033[0m";}
 M8(){ TPUT 13 3; $e "Не используйте строку под заголовком, оставив ее полностью пустой                  \033[32m -e                 --emptyline              \033[0m";}
 M9(){ TPUT 14 3; $e "Только чтение этого файла для настройки параметров nano                            \033[32m -f file            --rcfile=file            \033[0m";}
M10(){ TPUT 15 3; $e "Сделайте курсор видимым в обозревателе файлов                                      \033[32m -g                 --showcursor             \033[0m";}
M11(){ TPUT 16 3; $e "Показать сводку доступных параметров командной строки и выйти                      \033[32m -h                 --help                   \033[0m";}
M12(){ TPUT 17 3; $e "Автоматически увеличивать отступ для вновь созданной строки                        \033[32m -i                 --autoindent             \033[0m";}
M13(){ TPUT 18 3; $e "Прокрутите содержимое буфера на половину экрана, а не на строку                    \033[32m -j                 --jumpyscrolling         \033[0m";}
M14(){ TPUT 19 3; $e "Сделайте команду «Вырезать текст»                                                  \033[32m -k                 --cutfromcursor          \033[0m";}
M15(){ TPUT 20 3; $e "Отобразите номера строк слева от текстовой области                                 \033[32m -l                 --linenumbers            \033[0m";}
M16(){ TPUT 21 3; $e "Включите поддержку мыши, если она доступна в вашей системе                         \033[32m -m                 --mouse                  \033[0m";}
M17(){ TPUT 22 3; $e "Считайте любое имя, указанное в командной строке, новым файлом                     \033[32m -n                 --noread                 \033[0m";}
M18(){ TPUT 23 3; $e "Установите операционный каталог                                                    \033[32m -o directory       --operatingdir=directory \033[0m";}
M19(){ TPUT 24 3; $e "Сохраните последовательности XON и XOFF (^Q и ^S)                                  \033[32m -p                 --preserve               \033[0m";}
M20(){ TPUT 25 3; $e "Отобразите «полосу прокрутки» в правой части окна редактирования                   \033[32m -q                 --indicator              \033[0m";}
M21(){ TPUT 26 3; $e "Задайте целевую ширину для выравнивания и автоматического жесткого переноса        \033[32m -r number          --fill=number            \033[0m";}
M22(){ TPUT 27 3; $e "Используйте эту команду для проверки и исправления орфографии                      \033[32m -s \"program [arg]\" --speller=\"program [arg]\"\033[0m";}
M23(){ TPUT 28 3; $e "Сохраните измененный буфер без запроса (при выходе с помощью ^X)                   \033[32m -t                 --saveonexit             \033[0m";}
M24(){ TPUT 29 3; $e "Сохраните файл по умолчанию в формате Unix                                         \033[32m -u                 --unix                   \033[0m";}
M25(){ TPUT 30 3; $e "Просто просмотрите файл и запретите редактирование                                 \033[32m -v                 --view                   \033[0m";}
M26(){ TPUT 31 3; $e "Не переносите автоматически текущую строку, когда она становится слишком длинной   \033[32m -w                 --nowrap                 \033[0m";}
M27(){ TPUT 32 3; $e "Не показывайте две вспомогательные линии внизу экрана                              \033[32m -x                 --nohelp                 \033[0m";}
M28(){ TPUT 33 3; $e "Сделайте Ctrl + Right и Ctrl + Delete остановкой в конце слова, а не в начале      \033[32m -y                 --afterends              \033[0m";}
M29(){ TPUT 34 3; $e "Разрешить пользователю приостанавливать работу редактора                           \033[32m -z                 --suspendable            \033[0m";}
#
M30(){ TPUT 36 3; $e "Выход                                                                              \033[32m EXIT                                        \033[0m";}
LM=30
   MENU(){ for each in $(seq 0 $LM);do M${each};done;}
    POS(){ if [[ $cur == up ]];then ((i--));fi
           if [[ $cur == dn ]];then ((i++));fi
           if [[ $i -lt 0   ]];then i=$LM;fi
           if [[ $i -gt $LM ]];then i=0;fi;}
REFRESH(){ after=$((i+1)); before=$((i-1))
           if [[ $before -lt 0  ]];then before=$LM;fi
           if [[ $after -gt $LM ]];then after=0;fi
           if [[ $j -lt $i      ]];then UNMARK;M$before;else UNMARK;M$after;fi
           if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
           UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
   INIT(){ R;HEAD;FOOT;MENU;}
     SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
# Функция возвращения в меню
     ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  while [[ "$O" != " " ]]; do case $i in
 0) S=M0;SC;if [[ $cur == enter ]];then R;echo " Определите границы слова по-другому, рассматривая знаки препинания как часть слова.";ES;fi;;
 1) S=M1;SC;if [[ $cur == enter ]];then R;echo " Укажите, какие другие символы (кроме обычных буквенно-цифровых) следует рассматривать как часть слова. Когда хотите опустить -W (--wordbounds).";ES;fi;;
 2) S=M2;SC;if [[ $cur == enter ]];then R;echo " Укажите имя подсветки синтаксиса из числа определенных в файлах nanorc.";ES;fi;;
 3) S=M3;SC;if [[ $cur == enter ]];then R;echo " Позвольте немодифицированному Backspace или Delete стереть отмеченную область (вместо одного символа и без воздействия на буфер).";ES;fi;;
 4) S=M4;SC;if [[ $cur == enter ]];then R;echo " При мягком переносе строк переносите строки по пробелу, а не всегда по краю экрана.";ES;fi;;
 5) S=M5;SC;if [[ $cur == enter ]];then R;echo " Автоматически обертывать текущую строку, когда она становится слишком длинной. (Эта опция противоположна -w (--nowrap) эффект.)";ES;fi;;
 6) S=M6;SC;if [[ $cur == enter ]];then R;echo " Постоянно показывать положение курсора в строке состояния. Обратите внимание, что этот параметр отменяет параметр -U (--quickblank).";ES;fi;;
 7) S=M7;SC;if [[ $cur == enter ]];then R;echo " По-разному интерпретируйте клавиши Delete и Backspace, чтобы и Backspace, и Delete работали правильно.
 Вы должны только u система либо Backspace действует как Delete, либо Delete действует как Backspace.";ES;fi;;
 8) S=M8;SC;if [[ $cur == enter ]];then R;echo " Не используйте строку под заголовком, оставив ее полностью пустой.";ES;fi;;
 9) S=M9;SC;if [[ $cur == enter ]];then R;echo " Только чтение этого файла для настройки параметров nano вместо чтения как общесистемных, так и пользовательских файлов nanorc.";ES;fi;;
10) S=M10;SC;if [[ $cur == enter ]];then R;echo " Сделайте курсор видимым в обозревателе файлов (поместив его на выделенный элемент) и в средстве просмотра справки. Полезно для плохое зрение.";ES;fi;;
11) S=M11;SC;if [[ $cur == enter ]];then R;echo " Показать сводку доступных параметров командной строки и выйти.";ES;fi;;
12) S=M12;SC;if [[ $cur == enter ]];then R;echo " Автоматически увеличивать отступ для вновь созданной строки до того же количества табуляции и / или пробелов,
 что и для предыдущей строки (или для следующей начало абзаца).";ES;fi;;
13) S=M13;SC;if [[ $cur == enter ]];then R;echo " Прокрутите содержимое буфера на половину экрана, а не на строку.";ES;fi;;
14) S=M14;SC;if [[ $cur == enter ]];then R;echo " Сделайте команду «Вырезать текст» (обычно ^ K) обрезанной от текущей позиции курсора до конца строки, вместо того, чтобы вырезать всю строку.";ES;fi;;
15) S=M15;SC;if [[ $cur == enter ]];then R;echo " Отобразите номера строк слева от текстовой области. (Любая строка с привязкой дополнительно получает отметку на полях.)";ES;fi;;
16) S=M16;SC;if [[ $cur == enter ]];then R;echo "  Включите поддержку мыши, если она доступна в вашей системе. Если этот параметр включен, для размещения курсора можно использовать щелчки мышью, установите th и
 выполнить ярлыки. Мышь будет работать в системе X Window и на консоли при запущенном gpm. Текст может перетаскивание, удерживая клавишу Shift.";ES;fi;;
17) S=M17;SC;if [[ $cur == enter ]];then R;echo "  Считайте любое имя, указанное в командной строке, новым файлом. Это позволяет nano писать в именованные каналы: он будет начинаться с символа в трубу, когда
 пользователь сохраняет 'file'. Таким образом, nano можно использовать как редактор в сочетании, например, с gp конфиденциальные данные сначала на диск.";ES;fi;;
18) S=M18;SC;if [[ $cur == enter ]];then R;echo " Установите операционный каталог. Это делает настройку nano чем-то похожим на chroot.";ES;fi;;
19) S=M19;SC;if [[ $cur == enter ]];then R;echo " Сохраните последовательности XON и XOFF (^Q и ^S), чтобы они были перехвачены терминалом.";ES;fi;;
20) S=M20;SC;if [[ $cur == enter ]];then R;echo " Отобразите «полосу прокрутки» в правой части окна редактирования. Он показывает положение области просмотра в буфере покрытое областью просмотра.";ES;fi;;
21) S=M21;SC;if [[ $cur == enter ]];then R;echo "  Задайте целевую ширину для выравнивания и автоматического жесткого переноса на это количество столбцов. Если значение равно 0 или меньше, ширина экрана минус
 количество столбцов, что позволяет точке переноса изменяться вместе с шириной экрана, если sc значение -8.";ES;fi;;
22) S=M22;SC;if [[ $cur == enter ]];then R;echo " Используйте эту команду для проверки и исправления орфографии, вместо использования встроенного корректора, который вызывает hunspell или заклинание GNU.";ES;fi;;
23) S=M23;SC;if [[ $cur == enter ]];then R;echo " Сохраните измененный буфер без запроса (при выходе с помощью ^X). (Старая форма длинной опции --tempfile устарела.)";ES;fi;;
24) S=M24;SC;if [[ $cur == enter ]];then R;echo "  Сохраните файл по умолчанию в формате Unix. Это отменяет стандартное поведение nano при сохранении файла в том формате, в котором он,
 если вы также используете --noconvert.)";ES;fi;;
25) S=M25;SC;if [[ $cur == enter ]];then R;echo " Просто просмотрите файл и запретите редактирование: режим только для чтения. Этот режим позволяет пользователю открывать также другие файлы для vi дано тоже.";ES;fi;;
26) S=M26;SC;if [[ $cur == enter ]];then R;echo "  Не переносите автоматически текущую строку, когда она становится слишком длинной.
 Это значение по умолчанию. (Эта опция - oplines) - вступает в силу последняя заданная опция.)";ES;fi;;
27) S=M27;SC;if [[ $cur == enter ]];then R;echo " Не показывайте две вспомогательные линии внизу экрана.";ES;fi;;
28) S=M28;SC;if [[ $cur == enter ]];then R;echo " Сделайте Ctrl + Right и Ctrl + Delete остановкой в конце слова, а не в начале.";ES;fi;;
29) S=M29;SC;if [[ $cur == enter ]];then R;echo " Разрешить пользователю приостанавливать работу редактора (по умолчанию ^Z).";ES;fi;;
#
30) S=M30;SC;if [[ $cur == enter ]];then R;clear;exit 0;fi;;
 esac;POS;done
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Маленькая программка туториал (пошаговое объяснение, инструкция по выполнению) для консольного редактора nano.
